package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	str := "hello,world"
	arr := strings.Split(str, ",")
	for i := range arr {
		fmt.Println(arr[i])
	}
	//HasPrefix() 判断字符串 s 是否以 prefix 开头：
	var str1 string = "This is an example of a string"
	fmt.Println(strings.HasPrefix(str1, "This")) //true
	//HasSuffix() 判断字符串 s 是否以 suffix 结尾：
	fmt.Println(strings.HasSuffix(str1, "string")) //true
	//Contains() 判断字符串 s 是否包含 substr：
	fmt.Println(strings.Contains(str1, "example")) //true
	//Index() 返回 substr 在 s 中第一次出现的位置，如果不存在则返回 -1：
	fmt.Println(strings.Index(str1, "a")) //8
	//LastIndex() 返回 substr 在 s 中最后一次出现的位置，如果不存在则返回 -1：
	fmt.Println(strings.LastIndex(str1, "a")) //23
	//查找substr在s中出现次数
	fmt.Println(strings.Count(str1, "a")) //3
	//Replace() 用于替换字符串 s 中的 old 字符串为 new 字符串，n 表示替换的次数，小于 0 表示全部替换：
	fmt.Println(strings.Replace(str1, "a", "A", 2)) //This is An exAmple of a strIng
	//ToTitle() 将字符串 s 中的所有小写字母转换为大写字母：
	fmt.Println(strings.ToTitle(str1)) //THIS IS AN EXAMPLE OF A STRING
	//ToLower() 将字符串 s 中的所有大写字母转换为小写字母：
	fmt.Println(strings.ToLower(str1)) //this is an example of a string
	//ToUpperCase() 将字符串 s 中的所有小写字母转换为大写字母：
	fmt.Println(strings.ToUpper(str1)) //THIS IS AN EXAMPLE OF A STRING
	//Trim() 去除字符串 s 两端指定的字符 cutset。如果要去除字符串两端的空格，则可以使用 strings.TrimSpace(s)：
	fmt.Println(strings.Trim(str1, "This")) //is an example of a string
	//TrimSpace() 去除字符串 s 两端的空格：
	str2 := " hello world "
	fmt.Println(strings.TrimSpace(str2)) //hello world
	//Fields() 将字符串 s 按照空白字符分割，返回一个切片：
	str3 := "The quick brown fox jumps over the lazy dog"
	fields := strings.Fields(str3)
	fmt.Println(fields) //[The quick brown fox jumps over the lazy dog]
	//Join() 用于将字符串数组合并为一个字符串：
	fmt.Println(strings.Join(fields, "-")) //The-quick-brown-fox-jumps-over-the-lazy-dog

	//strings.Repeat() 用于重复字符串 s n 次：
	fmt.Println(strings.Repeat("abc", 3)) //abcabcabc
	//strings.IndexAny() 返回字符串 s 中第一个在字符串 chars 中出现的字符的索引，如果不存在则返回 -1：
	fmt.Println(strings.IndexAny(str1, "gn")) //9
	//strconv.Atoi 将字符串 s 转换为整数：
	fmt.Println(strconv.Atoi("123")) //123
	//strconv.Itoa 将整数 i 转换为字符串：
	fmt.Println(strconv.Itoa(123)) //"123"
	//strconv.ParseInt 将字符串 s 转换为整数，base 表示进制，bitSize 表示结果应该表示为的位大小（0 表示 int）：
	fmt.Println(strconv.ParseInt("123", 10, 64)) //123
	//strconv.FormatInt 将整数 i 转换为字符串，base 表示进制：
	fmt.Println(strconv.FormatInt(123, 10)) //"123"
	fmt.Println(strconv.FormatInt(123, 2))  //"1111011"
	//strconv.ParseFloat 将字符串 s 转换为浮点数，bitSize 表示结果应该表示为的位大小（32 表示 float32，64 表示 float64）：
	fmt.Println(strconv.ParseFloat("123.456", 64)) //123.456
	//strconv.FormatFloat 将浮点数 f 转换为字符串，fmt 表示格式（'f' 表示小数形式，'b' 表示二进制形式，'e' 表示指数形式等），prec 表示精度，bitSize 表示 f 的位大小（32 表示 float32，64 表示 float64）：
	fmt.Println(strconv.FormatFloat(123.456, 'f', 2, 64)) //"123.46"
	fmt.Println(strconv.FormatFloat(123.456, 'e', 2, 64)) //"1.23e+02"
	fmt.Println(strconv.FormatFloat(123.456, 'b', 2, 64)) //"8687443681197687p-46"
}
